//
//  PreferenceUtil.swift
//  偏好设置工具类；是否登录了，是否显示引导界面；用户Id
//
//  Created by smile on 2019/6/6.
//  Copyright © 2019 ixuea. All rights reserved.
//

import Foundation


class PreferenceUtil {
    // MARK: - 引导界面
    /// 是否显示引导界面
    ///
    /// - Returns: return true:表示要显示；false:表示不显示
    static func isShowGuide() -> Bool {
        let isShowGuide = UserDefaults.standard.bool(forKey: KEY_GUIDE)
        
        return !isShowGuide
    }
    
    /// 设置是否显示引导界面
    ///
    /// - Parameter data: true:不显示；false:显示
    static func setShowGuide(_ data:Bool) {
        UserDefaults.standard.set(data, forKey: KEY_GUIDE)
    }
    
    // MARK: - 用户相关
    /// 保存用户Id
    ///
    /// - Parameter data: <#data description#>
    static func setUserId(_ data:String) {
        UserDefaults.standard.set(data, forKey: KEY_USER_ID)
    }
    
    /// 获取用户Id
    ///
    /// - Returns: <#return value description#>
    static func userId() -> String? {
        return UserDefaults.standard.string(forKey: KEY_USER_ID)
    }
    
    /// 保存用户会话标识
    ///
    /// - Parameter data: <#data description#>
    static func setUserToken(_ data:String) {
        UserDefaults.standard.set(data, forKey: KEY_USER_TOKEN)
    }
    
    /// 获取用户会话标识
    ///
    /// - Returns: <#return value description#>
    static func userToken() -> String {
        return UserDefaults.standard.string(forKey: KEY_USER_TOKEN)!
    }
    
    /// 是否登录了
    ///
    /// - Returns: <#return value description#>
    static func isLogin() -> Bool {
        if let _ = userId() {
            return true
        }
        
        return false
    }
    
    /// 退出
    static func logout() {
        //清除用户Id
        UserDefaults.standard.removeObject(forKey: KEY_USER_ID)
        
        //清除用户登录标识
        UserDefaults.standard.removeObject(forKey: KEY_USER_TOKEN)
    }
    
    /// 保存最后播放音乐的Id
    ///
    /// - Parameter id: <#id description#>
    static func setLastPlaySongId(_ value:String)  {
        UserDefaults.standard.set(value, forKey: KEY_LAST_SONG_ID)
    }
    
    /// 获取最后播放音乐的Id
    ///
    /// - Returns: <#return value description#>
    static func lastPlaySongId() -> String? {
        return UserDefaults.standard.string(forKey: KEY_LAST_SONG_ID)
    }
    
    /// 移除耳机（包括蓝牙耳机，音响）是否暂停音乐播放
    ///
    /// - Returns: <#return value description#>
    static func isRemoveHeadsetStopMusic() -> Bool {
        return UserDefaults.standard.bool(forKey: KEY_REMOVE_HEADSET_STOP_MUSIC)
    }
    
    /// 设置移除耳机（包括蓝牙耳机，音响）是否暂停音乐播放
    ///
    /// - Parameter isStopMusic: <#isStopMusic description#>
    static func setRemoveHeadsetStopMusic(_ isStopMusic:Bool) {
        UserDefaults.standard.set(isStopMusic, forKey: KEY_REMOVE_HEADSET_STOP_MUSIC)
    }
    
    /// 是否是夜间模式
    ///
    /// - Returns: <#return value description#>
    static func isNight() -> Bool {
        //默认为false
        //正符合我们的需求
        //所以不用特殊处理
        return UserDefaults.standard.bool(forKey: KEY_NIGHT)
    }
    
    /// 设置是否是夜间模式
    ///
    /// - Parameter isNight: <#isNight description#>
    static func setNight(_ isNight:Bool) {
        UserDefaults.standard.set(isNight, forKey: KEY_NIGHT)
    }
    
    // MARK: - 常量key
    
    /// 是否显示引导界面常用key
    private static let KEY_GUIDE = "KEY_GUIDE"
    
    /// 用户Id常量key
    private static let KEY_USER_ID = "KEY_USER_ID"
    
    /// 用户标识常量key
    private static let KEY_USER_TOKEN = "KEY_USER_TOKEN"
    
    /// 最后播放音乐的Id
    private static let KEY_LAST_SONG_ID = "KEY_LAST_SONG_ID"
    
    /// 移除耳机后停止音乐播放Key
    private static let KEY_REMOVE_HEADSET_STOP_MUSIC="KEY_REMOVE_HEADSET_STOP_MUSIC"
    
    /// 夜间模式key
    private static let KEY_NIGHT="KEY_NIGHT"
}
